package com.caldera.vaquita;

import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.widget.RemoteViews;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class VaquitaWidget extends AppWidgetProvider {
	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {

		// Iteramos la lista de widgets en ejecuci�n
		for (int i = 0; i < appWidgetIds.length; i++) {
			// ID del widget actual
			int widgetId = appWidgetIds[i];

			// Actualizamos el widget actual
			actualizarWidget(context, appWidgetManager, widgetId);
		}
	}

	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		// Accedemos a las preferencias de la aplicaci�n
		SharedPreferences prefs = context.getSharedPreferences("WidgetPrefs",
				Context.MODE_PRIVATE);
		SharedPreferences.Editor editor = prefs.edit();

		// Eliminamos las preferencias de los widgets borrados
		for (int i = 0; i < appWidgetIds.length; i++) {
			// ID del widget actual
			int widgetId = appWidgetIds[i];

			editor.remove("msg_" + widgetId);
		}

		// Aceptamos los cambios
		editor.commit();

		super.onDeleted(context, appWidgetIds);
	}

	@Override
	public void onReceive(Context context, Intent intent) {

		if (intent.getAction().equals(
				"com.nohaylimites.checker.ACTUALIZAR_WIDGET")) {

			// //Obtenemos el widget manager y la lista de IDs de nuestro widget
			// ComponentName wgt =
			// new ComponentName(context, MiWidget.class);
			//
			// AppWidgetManager widgetManager =
			// AppWidgetManager.getInstance(context);
			//
			// int[] appWidgetIds = widgetManager.getAppWidgetIds(wgt);
			//
			// //Actualizamos todos los widgets
			// for(int i=0; i<appWidgetIds.length; i++)
			// actualizarWidget(context, widgetManager, appWidgetIds[i]);

			// Obtenemos el ID del widget a actualizar
			int widgetId = intent.getIntExtra(
					AppWidgetManager.EXTRA_APPWIDGET_ID,
					AppWidgetManager.INVALID_APPWIDGET_ID);

			// Obtenemos el widget manager de nuestro contexto
			AppWidgetManager widgetManager = AppWidgetManager
					.getInstance(context);

			// Actualizamos el widget
			if (widgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
				actualizarWidget(context, widgetManager, widgetId);
			}
		}

		super.onReceive(context, intent);
	}

	
	VaquitaUtils utils;
	VaquitaData data;
	SQLiteDatabase db;
	Cursor rs;
	String sql;
	String saldo;
	
	public static void actualizarWidget(Context context,
			AppWidgetManager appWidgetManager, int widgetId) {
		// Recuperamos el mensaje personalizado para el widget actual
		SharedPreferences prefs = context.getSharedPreferences("WidgetPrefs",
				Context.MODE_PRIVATE);
		String mensaje = prefs.getString("msg_" + widgetId, "Saldo:");

		// Obtenemos la lista de controles del widget actual
		RemoteViews controles = new RemoteViews(context.getPackageName(),
				R.layout.widget);

		// Asociamos los 'eventos' al widget
		Intent intent = new Intent("com.nohaylimites.checker.ACTUALIZAR_WIDGET");
		intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
		PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
				widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);

		controles.setOnClickPendingIntent(R.id.BtnActualizar, pendingIntent);

		// Actualizamos el mensaje en el control del widget
		controles.setTextViewText(R.id.LblMsg, mensaje);
		// /////////////////////////////////////////////////////////////////////////
		// ACA IMPLEMENTAR LLAMADA
		// Obtenemos la hora actual
		//Calendar calendario = new GregorianCalendar();
		//String hora = calendario.getTime().toLocaleString();
		
		String saldo = VaquitaCajaReport.getSaldo();
		String salida = VaquitaCajaReport.getSalida();
		
		// //////////////////////////////////////////////////////////////////////
		// Actualizamos la hora en el control del widget
		controles.setTextViewText(R.id.LblSaldo, saldo);
		controles.setTextViewText(R.id.LblSalida, salida);

		// Notificamos al manager de la actualizaci�n del widget actual
		appWidgetManager.updateAppWidget(widgetId, controles);
	}

	
}
